#include<iostream>
#include<cstring>
#include<vector>

using namespace std;

const int N=1e5+10,M=3e6+10;

vector<vector<int>> son(N,vector<int>(62,0));
vector<int> cnt(N,0);
int idx=0;

int getnum(char c){
	if(c>='0'&&c<='9'){
		return c-'0';
	}else if(c>='a'&&c<='z'){
		return c-'a'+10;
	}else if(c>='A'&&c<='Z'){
		return c-'A'+36;
	}else{
		return -1;
	}
}

void insert(char str[]){
	int p=0;
	for(int i=0;str[i];i++){
			int c=getnum(str[i]);
			if(!son[p][c]){
				son[p][c]=++idx;
			}
			p=son[p][c];
		}
		cnt[p]++;
}

int query(char t[]){
	int p=0;
	for(int i=0;t[i];i++){
		int c=getnum(t[i]);
		if(!son[p][c]){
			return 0;
		}
		p=son[p][c];
	}
	return cnt[p];
}

int main(){
	int n,q,T;
	cin.tie(0); 
	scanf("%d",&T);
	while(T--){
		scanf("%d%d",&n,&q);
		memset(son[0].data(),0,sizeof(int)*N*62);
		memset(cnt.data(), 0, sizeof(int) * N);
		idx=0;
		while(n--){
		scanf("%s",str);
		insert(str);
	} 
	while(q--){
		scanf("%s",t);
		printf("%d\n",query(t));
	}
	}
	return 0;
}
